<?php
// 应用公共文件

if (!function_exists('setAdminJWT')) {
    /**
     * 设置管理后台jwt
     * @param $data
     * @return string
     * @throws Exception
     */
    function setAdminJWT($data): string
    {
        if (env('jwt.adminapi') == null) {
            throw new Exception('jwt key null');
        }

        $jwt = new Firebase\JWT\JWT();
        $token = [
            // "iss"  => "http://example.org", // 签发者
            // "aud"  => "http://example.com", // 认证者
            'iat' => time(), // 签发时间
            'nbf' => time(), // 生效时间
            'exp' => (time() + 60 * 60 * 24 * 7), // 过期时间  1小时后的时间戳
            'data' => $data
        ];

        return $jwt::encode($token, env('jwt.adminapi'), 'HS256');
    }
}

if (!function_exists('getAdminJWT')) {
    /**
     * 获取管理后台token中的信息
     * @param $token
     * @return array|null
     * @throws Exception
     */
    function getAdminJWT($token): ?array
    {
        if (env('jwt.adminapi') == null) {
            throw new Exception('jwt key null');
        }

        $jwt = new Firebase\JWT\JWT();
        try {
            $jwtData = $jwt::decode($token, new Firebase\JWT\Key(env('jwt.adminapi'), 'HS256'));
            $data = (array)($jwtData->data);
        } catch (\Exception $e) {
            kg_file_put_contents('getAdminJWT', [$e->getMessage()]);
            return null;
        }
        return $data;
    }
}